package isanfeng.tuxiaoer.pattern.creational.Esingleton.lazy;

/**
 * 静态内部类原理： 在类的初始化阶段，有一个锁，只有一个线程能够进入。
 * 立即初始化：
 *  1. new
 *  2. 静态方法被调用
 *  3. 静态成员被初始化
 *  4. 静态成员被使用，且非常量成员
 *  5. 等等
 * @author 李红辉
 * @version 1.0
 * @date 2019/10/9 15:57
 */
public class StaticInnerClassSingleton {
    private StaticInnerClassSingleton() {
    }

    /**
     * 初始化锁
     */
    private static class InnerClass {
        private static StaticInnerClassSingleton  staticInnerClassSingleton = new StaticInnerClassSingleton();
    }
    public static StaticInnerClassSingleton getInstance() {
        return InnerClass.staticInnerClassSingleton;
    }
}
